package main.java;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;


public class Gameboard {
		BolsaDeTela bolsa;
		Game juego;
	public Gameboard(Game juego){
		bolsa= new BolsaDeTela();
		this.juego= juego;
		List<Coche> fabricas= new ArrayList<Coche>();
		fabricasAConstruir=fabricas;
		fabricasCerradas=fabricas;
		fabricasConstruidas= Collections.emptyMap();
		coche= fabricas;
		cajetinesDeVenta= new CajetinesDeVenta();
		decisionesEjecutivas= new DecisionesEjecutivas();
		ordenDeJuego=new OrdenDeJuego();
		perdidas= new Perdidas();
		personajes = new Personajes();
		prestamo = new Prestamo();
		redDistribuidores = new RedDistribuidores();
		secuenciaDeTurno = new SecuenciaDeTurno();
		ventaPorDemanda = new VentaPorDemanda();
	}
		public List<Integer> produccion(){
			return null;
		}

		/**
		 * @uml.property  name="fabricasAConstruir"
		 */
		private  List<Coche> fabricasAConstruir;

		/**
		 * Getter of the property <tt>fabricasAConstruir</tt>
		 * @return  Returns the fabricasAConstruir.
		 * @uml.property  name="fabricasAConstruir"
		 */
		public  List<Coche> getFabricasAConstruir() {
			return fabricasAConstruir;
		}

		/**
		 * Setter of the property <tt>fabricasAConstruir</tt>
		 * @param fabricasAConstruir  The fabricasAConstruir to set.
		 * @uml.property  name="fabricasAConstruir"
		 */
		public void setFabricasAConstruir(List<Coche> fabricasAConstruir2) {
			fabricasAConstruir = fabricasAConstruir2;
		}

		/**
		 * @uml.property  name="fabricasConstruidas"
		 */
		private  Map<Coche,Integer> fabricasConstruidas;

		/**
		 * Getter of the property <tt>fabricasConstruidas</tt>
		 * @return  Returns the fabricasConstruidas.
		 * @uml.property  name="fabricasConstruidas"
		 */
		public  Map<Coche,Integer>  getFabricasConstruidas() {
			return fabricasConstruidas;
		}

		/**
		 * Setter of the property <tt>fabricasConstruidas</tt>
		 * @param fabricasConstruidas  The fabricasConstruidas to set.
		 * @uml.property  name="fabricasConstruidas"
		 */
		public void setFabricasConstruidas(Map<Coche,Integer>  fabricasConstruidas1) {
			fabricasConstruidas = fabricasConstruidas1;
		}

		/**
		 * @uml.property  name="fabricasCerradas"
		 */
		private  List<Coche> fabricasCerradas;

		/**
		 * Getter of the property <tt>fabricasCerradas</tt>
		 * @return  Returns the fabricasCerradas.
		 * @uml.property  name="fabricasCerradas"
		 */
		public  List<Coche> getFabricasCerradas() {
			return fabricasCerradas;
		}

		/**
		 * Setter of the property <tt>fabricasCerradas</tt>
		 * @param fabricasCerradas  The fabricasCerradas to set.
		 * @uml.property  name="fabricasCerradas"
		 */
		public void setFabricasCerradas(List<Coche> fabricasCerradas2) {
			fabricasCerradas = fabricasCerradas2;
		}

		/** 
		 * @uml.property name="secuenciaDeTurno"
		 * @uml.associationEnd multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.SecuenciaDeTurno"
		 */
		private SecuenciaDeTurno secuenciaDeTurno;

		/** 
		 * Getter of the property <tt>secuenciaDeTurno</tt>
		 * @return  Returns the secuenciaDeTurno.
		 * @uml.property  name="secuenciaDeTurno"
		 */
		public SecuenciaDeTurno getSecuenciaDeTurno() {
			return secuenciaDeTurno;
		}

		/** 
		 * Setter of the property <tt>secuenciaDeTurno</tt>
		 * @param secuenciaDeTurno  The secuenciaDeTurno to set.
		 * @uml.property  name="secuenciaDeTurno"
		 */
		public void setSecuenciaDeTurno(SecuenciaDeTurno secuenciaDeTurno) {
			this.secuenciaDeTurno = secuenciaDeTurno;
		}

		/** 
		 * @uml.property name="decisionesEjecutivas"
		 * @uml.associationEnd multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.DecisionesEjecutivas"
		 */
		private DecisionesEjecutivas decisionesEjecutivas;

		/** 
		 * Getter of the property <tt>decisionesEjecutivas</tt>
		 * @return  Returns the decisionesEjecutivas.
		 * @uml.property  name="decisionesEjecutivas"
		 */
		public DecisionesEjecutivas getDecisionesEjecutivas() {
			return decisionesEjecutivas;
		}

		/** 
		 * Setter of the property <tt>decisionesEjecutivas</tt>
		 * @param decisionesEjecutivas  The decisionesEjecutivas to set.
		 * @uml.property  name="decisionesEjecutivas"
		 */
		public void setDecisionesEjecutivas(
				DecisionesEjecutivas decisionesEjecutivas) {
					this.decisionesEjecutivas = decisionesEjecutivas;
				}

		/**
		 * @uml.property  name="coche"
		 * @uml.associationEnd  multiplicity="(0 -1)" aggregation="composite" inverse="gameboard:Automobile.Coche"
		 */
		private List<Coche> coche;

		/**
		 * Getter of the property <tt>coche</tt>
		 * @return  Returns the coche.
		 * @uml.property  name="coche"
		 */
		public List<Coche> getCoche() {
			return coche;
		}

		/**
		 * Setter of the property <tt>coche</tt>
		 * @param coche  The coche to set.
		 * @uml.property  name="coche"
		 */
		public void setCoche(List<Coche> coches) {
			this.coche = coches;
		}

		/** 
		 * @uml.property name="ventaPorDemanda"
		 * @uml.associationEnd multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.VentaPorDemanda"
		 */
		private VentaPorDemanda ventaPorDemanda;

		/** 
		 * Getter of the property <tt>ventaPorDemanda</tt>
		 * @return  Returns the ventaPorDemanda.
		 * @uml.property  name="ventaPorDemanda"
		 */
		public VentaPorDemanda getVentaPorDemanda() {
			return ventaPorDemanda;
		}

		/** 
		 * Setter of the property <tt>ventaPorDemanda</tt>
		 * @param ventaPorDemanda  The ventaPorDemanda to set.
		 * @uml.property  name="ventaPorDemanda"
		 */
		public void setVentaPorDemanda(VentaPorDemanda ventaPorDemanda) {
			this.ventaPorDemanda = ventaPorDemanda;
		}

		/**
		 * @uml.property  name="prestamo"
		 * @uml.associationEnd  multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.Prestamo"
		 */
		private Prestamo prestamo;

		/**
		 * Getter of the property <tt>prestamo</tt>
		 * @return  Returns the prestamo.
		 * @uml.property  name="prestamo"
		 */
		public Prestamo getPrestamo() {
			return prestamo;
		}

		/**
		 * Setter of the property <tt>prestamo</tt>
		 * @param prestamo  The prestamo to set.
		 * @uml.property  name="prestamo"
		 */
		public void setPrestamo(Prestamo prestamo) {
			this.prestamo = prestamo;
		}

		/** 
		 * @uml.property name="ordenDeJuego"
		 * @uml.associationEnd multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.OrdenDeJuego"
		 */
		private OrdenDeJuego ordenDeJuego;

		/** 
		 * Getter of the property <tt>ordenDeJuego</tt>
		 * @return  Returns the ordenDeJuego.
		 * @uml.property  name="ordenDeJuego"
		 */
		public OrdenDeJuego getOrdenDeJuego() {
			return ordenDeJuego;
		}

		/** 
		 * Setter of the property <tt>ordenDeJuego</tt>
		 * @param ordenDeJuego  The ordenDeJuego to set.
		 * @uml.property  name="ordenDeJuego"
		 */
		public void setOrdenDeJuego(OrdenDeJuego ordenDeJuego) {
			this.ordenDeJuego = ordenDeJuego;
		}

		/**
		 * @uml.property  name="personajes"
		 * @uml.associationEnd  multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.Personajes"
		 */
		private Personajes personajes;

		/**
		 * Getter of the property <tt>personajes</tt>
		 * @return  Returns the personajes.
		 * @uml.property  name="personajes"
		 */
		public Personajes getPersonajes() {
			return personajes;
		}

		/**
		 * Setter of the property <tt>personajes</tt>
		 * @param personajes  The personajes to set.
		 * @uml.property  name="personajes"
		 */
		public void setPersonajes(Personajes personajes) {
			this.personajes = personajes;
		}

		/**
		 * @uml.property  name="redDistribuidores"
		 * @uml.associationEnd  multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.RedDistribuidores"
		 */
		private RedDistribuidores redDistribuidores;

		/**
		 * Getter of the property <tt>redDistribuidores</tt>
		 * @return  Returns the redDistribuidores.
		 * @uml.property  name="redDistribuidores"
		 */
		public RedDistribuidores getRedDistribuidores() {
			return redDistribuidores;
		}

		/**
		 * Setter of the property <tt>redDistribuidores</tt>
		 * @param redDistribuidores  The redDistribuidores to set.
		 * @uml.property  name="redDistribuidores"
		 */
		public void setRedDistribuidores(RedDistribuidores redDistribuidores) {
			this.redDistribuidores = redDistribuidores;
		}

		/**
		 * @uml.property  name="cajetinesDeVenta"
		 * @uml.associationEnd  multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.CajetinesDeVenta"
		 */
		private CajetinesDeVenta cajetinesDeVenta;

		/**
		 * Getter of the property <tt>cajetinesDeVenta</tt>
		 * @return  Returns the cajetinesDeVenta.
		 * @uml.property  name="cajetinesDeVenta"
		 */
		public CajetinesDeVenta getCajetinesDeVenta() {
			return cajetinesDeVenta;
		}

		/**
		 * Setter of the property <tt>cajetinesDeVenta</tt>
		 * @param cajetinesDeVenta  The cajetinesDeVenta to set.
		 * @uml.property  name="cajetinesDeVenta"
		 */
		public void setCajetinesDeVenta(CajetinesDeVenta cajetinesDeVenta) {
			this.cajetinesDeVenta = cajetinesDeVenta;
		}

		/**
		 * @uml.property  name="perdidas"
		 * @uml.associationEnd  multiplicity="(1 1)" aggregation="composite" inverse="gameboard:Automobile.Perdidas"
		 */
		private Perdidas perdidas;

		/**
		 * Getter of the property <tt>perdidas</tt>
		 * @return  Returns the perdidas.
		 * @uml.property  name="perdidas"
		 */
		public Perdidas getPerdidas() {
			return perdidas;
		}

		/**
		 * Setter of the property <tt>perdidas</tt>
		 * @param perdidas  The perdidas to set.
		 * @uml.property  name="perdidas"
		 */
		public void setPerdidas(Perdidas perdidas) {
			this.perdidas = perdidas;
		}
		public BolsaDeTela getBolsa() {
			
			return bolsa;
		}

}
